{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/zhuzhaohua/Applications/anaconda3/lib/python3.6/site-packages/sklearn/cross_validation.py:41: DeprecationWarning: This module was deprecated in version 0.18 in favor of the model_selection module into which all the refactored classes and functions are moved. Also note that the interface of the new CV iterators are different from that of this module. This module will be removed in 0.20.\n",
      "  \"This module will be removed in 0.20.\", DeprecationWarning)\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "from matplotlib import  pyplot as plt\n",
    "from sklearn.neural_network import MLPClassifier\n",
    "from sklearn import datasets\n",
    "from sklearn import cross_validation"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 以鸢尾花数据进行测试"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 鸢尾花分类的数据\n",
    "def load_data():\n",
    "    iris = datasets.load_iris()\n",
    "    return cross_validation.train_test_split(iris.data,iris.target,test_size=0.25,random_state=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "【训练集成绩】Training Score:0.9821428571428571\n",
      "【测试集成绩】Testing  Score:0.9736842105263158\n"
     ]
    }
   ],
   "source": [
    "# 测试：\n",
    "def test_MLPClassifier(*data):\n",
    "    X_train,X_test,Y_train,Y_test = data\n",
    "    nn = MLPClassifier(activation='logistic',max_iter=10000,hidden_layer_sizes=(20,))\n",
    "    nn.fit(X_train,Y_train)\n",
    "    \n",
    "    print('【训练集成绩】Training Score:{0}'.format(nn.score(X_train,Y_train)))\n",
    "    print('【测试集成绩】Testing  Score:{0}'.format(nn.score(X_test,Y_test)))\n",
    "\n",
    "# 开始测试：\n",
    "X_train,X_test,Y_train,Y_test = load_data()\n",
    "test_MLPClassifier(X_train,X_test,Y_train,Y_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "hidden_layers : (10,)\n",
      "【训练集成绩】Training Score:0.9821428571428571\n",
      "【测试集成绩】Testing  Score:0.9736842105263158\n",
      "hidden_layers : (30,)\n",
      "【训练集成绩】Training Score:0.9821428571428571\n",
      "【测试集成绩】Testing  Score:0.9736842105263158\n",
      "hidden_layers : (100,)\n",
      "【训练集成绩】Training Score:0.9821428571428571\n",
      "【测试集成绩】Testing  Score:0.9736842105263158\n",
      "hidden_layers : (5, 5)\n",
      "【训练集成绩】Training Score:0.36607142857142855\n",
      "【测试集成绩】Testing  Score:0.23684210526315788\n",
      "hidden_layers : (10, 10)\n",
      "【训练集成绩】Training Score:0.9821428571428571\n",
      "【测试集成绩】Testing  Score:0.9736842105263158\n",
      "hidden_layers : (30, 30)\n",
      "【训练集成绩】Training Score:0.9821428571428571\n",
      "【测试集成绩】Testing  Score:0.9736842105263158\n"
     ]
    }
   ],
   "source": [
    "# 测试隐藏层对成绩的影响：\n",
    "def test_MLPClassifier_hidden_layer(*data):\n",
    "    X_train,X_test,Y_train,Y_test = data\n",
    "    hidden_layers = ((10,),(30,),(100,),(5,5),(10,10),(30,30))\n",
    "    for hidden_layer in hidden_layers:\n",
    "        nn = MLPClassifier(activation='logistic',max_iter=10000,hidden_layer_sizes=hidden_layer)\n",
    "        nn.fit(X_train,Y_train)\n",
    "        print('hidden_layers : {0}'.format(hidden_layer))\n",
    "        print('【训练集成绩】Training Score:{0}'.format(nn.score(X_train,Y_train)))\n",
    "        print('【测试集成绩】Testing  Score:{0}'.format(nn.score(X_test,Y_test)))\n",
    "\n",
    "# 开始测试：\n",
    "X_train,X_test,Y_train,Y_test = load_data()\n",
    "test_MLPClassifier_hidden_layer(X_train,X_test,Y_train,Y_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1080x360 with 3 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 测试不同激活函数,不同学习率对成绩的影响\n",
    "# 测试：\n",
    "def test_MLPClassifier_activation(*data):\n",
    "    train_x, test_x, train_y, test_y = data\n",
    "    fig = plt.figure()\n",
    "    fig.set_figheight(5)\n",
    "    fig.set_figwidth(15)\n",
    "    activations = ('logistic','relu','tanh')\n",
    "    etas = np.logspace(-4, -1,10)\n",
    "    for i, activation  in enumerate(activations):\n",
    "        train_score = []\n",
    "        test_score = []\n",
    "        for eta in  etas:\n",
    "                nn = MLPClassifier(activation=activation,learning_rate_init=eta,max_iter=10000)\n",
    "                nn.fit(X_train,Y_train)\n",
    "                train_score.append(nn.score(train_x,train_y))\n",
    "                test_score.append(nn.score(test_x,test_y))\n",
    "    \n",
    "        # 绘图：\n",
    "        ax = fig.add_subplot(1,3,i+1)\n",
    "        ax.plot(etas,train_score,label='Training Score',marker='+')\n",
    "        ax.plot(etas,test_score, label='Testing Score',marker='o')\n",
    "        ax.set_xlabel(r'$\\eta$')\n",
    "        ax.set_ylabel('score')\n",
    "        ax.set_title('MLPClassifier-{0}'.format(activation))\n",
    "        ax.set_xscale('log')\n",
    "        ax.legend(loc='best',framealpha=0.5)\n",
    "    plt.show()\n",
    "\n",
    "# 开始测试：\n",
    "X_train,X_test,Y_train,Y_test = load_data()\n",
    "test_MLPClassifier_activation(X_train,X_test,Y_train,Y_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 以手写数字进行测试"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 数字识别能力\n",
    "def load_data2():\n",
    "    digits = datasets.load_digits()\n",
    "    return cross_validation.train_test_split(digits.data,digits.target,test_size=0.25,random_state=0, stratify=digits.target)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 25 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 显示Digit数据\n",
    "def show_digits():\n",
    "    digits = datasets.load_digits()\n",
    "    fig = plt.figure()\n",
    "    #print('images 0 :',digits.data[0])\n",
    "    for i in range(25):\n",
    "        ax = fig.add_subplot(5,5,i+1)\n",
    "        #print(digits.images[i])\n",
    "        ax.imshow(digits.images[i], cmap=plt.cm.gray_r, interpolation='nearest')\n",
    "    plt.show()\n",
    "\n",
    "show_digits()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "【训练集成绩】Training Score:1.0\n",
      "【测试集成绩】Testing  Score:0.9777777777777777\n"
     ]
    }
   ],
   "source": [
    "# 测试：\n",
    "def test_MLPClassifier2(*data):\n",
    "    X_train,X_test,Y_train,Y_test = data\n",
    "    nn = MLPClassifier(activation='logistic',max_iter=10000,hidden_layer_sizes=(50,))\n",
    "    nn.fit(X_train,Y_train)\n",
    "    \n",
    "    print('【训练集成绩】Training Score:{0}'.format(nn.score(X_train,Y_train)))\n",
    "    print('【测试集成绩】Testing  Score:{0}'.format(nn.score(X_test,Y_test)))\n",
    "# 测试：\n",
    "# 开始测试：\n",
    "X_train,X_test,Y_train,Y_test = load_data2()\n",
    "test_MLPClassifier2(X_train,X_test,Y_train,Y_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
